A network is a collection of links and nodes (e.g., multiple computers and/or other devices connected together) arranged so that information may be passed from one part of the network to another over multiple links and through various nodes. Examples of networks include the Internet, the public switched telephone network, the global Telex network, computer networks (e.g., an intranet, an extranet, a local-area network, or a wide-area network), wired networks, and wireless networks.
Distributed storage is a method to provide data storage. Instead of storing a file and its replicas in multiple servers, the file is broken into components that are stored on multiple servers. This distributed storage increases data reliability and achieves data confidentiality without data encryption and key management involvement. A typical approach is to encode the file using an (n, k) Reed-Solomon (RS) code and distribute the encoded file into n servers. To recover the distributed file, the encoded parts are collected from any k servers, which establishes a trade-off between reliability and efficiency. However, when repairing or regenerating the contents of a failed node (e.g., a k server), the whole file has to be recovered first, which is bandwidth intensive.
Regenerating code is a class of distributed storage codes that can optimally trade the bandwidth required to repair a failed node with the amount of data stored per node. There are two main considerations in the regeneration tradeoff curve: the minimum storage regeneration (MSR) code and the minimum bandwidth regeneration (MBR) code. The concept of regenerating code includes a replacement node, allowed to connect to some individual nodes directly to regenerate a substitute of the failed node, instead of first recovering the original data then regenerating the failed component. Compared to the RS code, regenerating code achieves the often preferable trade-off between bandwidth and storage within the MSR and the MBR points.